

package Modelo;
import java.sql.*;

public class Ciudades {
    Connection con;
  

    public Ciudades() {
        
        this.con = Conexion.getConexion();
    }

    public Object[][] getCiudades() {
        
        Object[][] filas = null;
        try {
            Statement query = this.con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);
            ResultSet res = query.executeQuery("SELECT id_ciudad, nombre FROM Ciudades");
            //Clase para obtener más datos sobre la consulta
            ResultSetMetaData resmd = res.getMetaData();
            //Obtengo el total de columnas de la consulta
            int totalColumnas = resmd.getColumnCount();
            res.last();
            //obtengo el total de filas
            int totalFilas = res.getRow();
            res.beforeFirst();
            
            //Creo el objeto filas
            filas = new Object[totalFilas][totalColumnas];
            
            //Mientras hallan resultados poblo el objeto filas para luego devolverlo
            while (res.next()) {          
                for (int i = 0; i < totalColumnas; i++) {
                    filas[(res.getRow()-1)][i] = res.getString((i+1));
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        
        return filas;
    }

    public void deleteCiudades(int id_ciudad) {
        try {
            PreparedStatement query = this.con.prepareStatement("DELETE FROM Ciudades WHERE id_ciudad=?");
            query.setInt(1, id_ciudad);
            query.executeUpdate();
            query.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    public boolean addCiudad(String nombre) {
      
        
        if(this.existeCiudad(nombre.trim())){
            Funciones.mensaje("La ciudad ya existe, prueba con otra");
            return false;
        }
        try {
            PreparedStatement query = this.con.prepareStatement("INSERT INTO Ciudades (nombre) values (?);");
            query.setString(1, nombre.trim());
            
          
            query.executeUpdate();
            query.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
        
        return true;
    }
    
    public int getIdCiudadByNombre(String nombre){
        int id_ciudad = -1;
        try {
            PreparedStatement query = this.con.prepareStatement("SELECT id_ciudad FROM Ciudades "
                    + "WHERE nombre=?");
            query.setString(1, nombre.trim());
            ResultSet res = query.executeQuery();
            //Clase para obtener más datos sobre la consulta
            ResultSetMetaData resmd = res.getMetaData();
            //Obtengo el total de columnas de la consulta
            int totalColumnas = resmd.getColumnCount();
            
            //Creo el objeto filas

            
            //Si existe el cliente
            if(res.next()){
                for (int i = 0; i < totalColumnas; i++) {
                    id_ciudad = res.getInt(i+1);
                }
            }else{
                return -1;
            }
            
            query.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
        
        return id_ciudad;
    }
    
    public boolean existeCiudad (String nombre) {
        boolean existe=false;
        try {
            PreparedStatement query = this.con.prepareStatement("SELECT id_ciudad FROM Plan WHERE nombre=?");
            query.setString(1, nombre.trim());
            query.executeQuery();
             ResultSet res = query.executeQuery();

            if (res.next()) {
                existe = true;
            } else {
                existe = false;
            }
            query.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
        
        return existe;
    }
    
    // Actualizar planes
    public void updateCiudad (String nombre, int id_ciudad){
       try {            
            PreparedStatement pstm = this.con.prepareStatement("update Ciudades " +
            "set nombre= ? "+ 
            "where id_ciudad = ? ");            
            pstm.setString(1, nombre);                   
            
            pstm.setInt(2, id_ciudad);
            pstm.execute();
            pstm.close();            
         }catch(SQLException e){
         System.out.println(e);
      }
   }
    
}
